'''
用掩码限制QlineEdit控件的输入
    ASCII字符

A   字符是必须输入（A-Z, a-z）
a   字符是可以输入（A-Z, a-z）

N   字符是必须输入（A-Z, a-z, 0-9）
n   字符是可以输入（A-Z, a-z, 0-9）

X   任意字符必须输入
x   任意字符可以输入

9   数字必须输入（0-9）
0   数字可输入（0-9）

D   （1-9）
d    （1-9）

#   ASCII 可输入 +-/

H   十六进制必输入，必须（A-F, a-f, 0-9）
h   十六进制可输入，不必须（A-F, a-f, 0-9）

B   二进制必输入，必须（0，1）
b   二进制可输入，不必须（0，1）

>   所有字母字符大写
<   所有字母字符小写

!   关闭大小写转换

\   转义字符
'''

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

import sys

class QLineEditMask(QWidget):
    def __init__(self):
        super(QLineEditMask, self).__init__()

        self.initUI()

    def initUI(self):
        self.setWindowTitle("MASK QLineEdit")
        formLayout = QFormLayout()

        ipLineEdit = QLineEdit()
        macLineEdit = QLineEdit()
        dateLineEdit = QLineEdit()
        licenseLineEdit = QLineEdit()

        ipLineEdit.setInputMask('000.000.000.000;_')
        macLineEdit.setInputMask('HH:HH:HH:HH;_')
        dateLineEdit.setInputMask('0000-00-00')
        licenseLineEdit.setInputMask('>AAAA-AAAA-AAAA-AAAA-AAAA;#')

        formLayout.addRow("数字掩码", ipLineEdit)
        formLayout.addRow("Mac掩码", macLineEdit)
        formLayout.addRow("日期掩码", dateLineEdit)
        formLayout.addRow("密钥掩码", licenseLineEdit)

        self.setLayout(formLayout)
if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = QLineEditMask()
    ex.show()

    sys.exit(app.exec_())